用假資料撐了幾天,但是老姐也差不多要開始開發建立題目、刪除題目的部分了。
之前建立了在新 pacakge response 底下的新類別 TopicResponse 。
package com.katelee.response
import java.util.UUID
data class TopicResponse (
val id: UUID,
val avatar: String,
val name: String,
val attendance: String
)
get("/api/topics") {
val list = ArrayList<TopicResponse>()
for (i in 0..10) {
list.add(TopicResponse(
id = UUID.randomUUID().toString(),
name = "從前從前有碗" + listOf("海龜湯", "孟婆湯", "玉米湯", "南瓜湯").random(),
avatar = "https://imgur.com/l0swFL1.jpg",
attendance = (0..10).random().toString() + "人")
)
}
call.respond(list)
}
各資料庫的語法上有些微的差異,但大致上是一樣的,所以上架之前都還能更換,最重要的是先建好 table 。
先排除一看就知道是配套雲端服務的 Amazon Redshift, Azure SQL Database 以外,也看到熟悉的 MS Server, MongoDB, MySQL, Oracle, PostgreSQL, SQLite ,在看過 http://www.h2database.com/html/features.html 之後,決定試試 H2 資料庫。
除了 H2 資料庫本身是用 Java 開發以外,支援加密資料和 SSL 連線,資料儲存方式可以選擇 in-memory
或是 persistent
。in-memory
就是只存在記憶體,關機就清空,還滿適合開發階段。
目前因為只打算讓這台電腦的 Ktor 程式可以連線,所以選擇 Embedded Mode
,如果將來打算讓其他電腦也來連線可能會改成 Server Mode
或是混用的 Mixed Mode
。
下方有個小提示說我還沒下載 driver ,點下去後下載的是一個 jar 檔,接著按下測試連線的按鈕。
遺憾地出現了錯誤 [90067][90067] Connection is broken: "java.net.ConnectException: Connection refused (Connection refused): localhost:9092" [90067-200] java.net.ConnectException: Connection refused (Connection refused).
不過關掉視窗後還是出現了可以手動輸入 SQL 的 H2 console ,所以應該不是大問題?
雖然理想上是在程式裡建立和查詢資料,但 H2 console 可以迅速測試語法,不用重新編譯整個 Ktor ,所以可以在 H2 console 測試過再放進程式。
今天有點晚了,明天再多撥出一些時間串接這個新的資料庫吧。
本次鐵人賽的作品在放進更多內容後已經成書,書名是《老姐要用Kotlin寫專案:從 Server 到 Android APP 的開發生存日記》,歡迎購買唷。https://www.tenlong.com.tw/products/9789864348978